QbyteArray 包含 0x00 转换为 QString 时数据被截断 Qt5.9 您所在的位置:网站首页 qt bytearray转char QbyteArray 包含 0x00 转换为 QString 时数据被截断 Qt5.9

QbyteArray 包含 0x00 转换为 QString 时数据被截断 Qt5.9

2024-02-01 06:57| 来源: 网络整理| 查看: 265

使用 QByteArray 包含有 0x00 的数据直接转 QString 0x00 及后面的数据会被截断

如 48 3A 01 41 00 00 00 00 00 00 00 00 C4 45 44 变成 48 3A 01 41

解决方案 QString::fromStdString(data.toStdString()));

// 示例数据 QByteArray data; data.resize(15); data[0] = 0x48; // Frame header. data[1] = 0x3A; // Frame header. data[2] = 0x01; // Addr. data[3] = 0x41; // Func. data[4] = 0x00; // Data begin. data[5] = 0x00; // ↓ data[6] = 0x00; // ↓ data[7] = 0x00; // ↓ data[8] = 0x00; // ↓ data[9] = 0x00; // ↓ data[10] = 0x00; // ↓ data[11] = 0x00; // Data end. data[12] = 0xC4; // Checksum, lower 8 bits. data[13] = 0x45; // End of framer. data[14] = 0x44; // End of framer. // 此时若采用传统方法 str_data = 48 3A 01 41 QString str_data = QString::fromLocal8Bit(data); // 解决方案如下, 此时 str_data = 48 3A 01 41 00 00 00 00 00 00 00 00 C4 45 44 QString str_data = QString::fromStdString(data.toStdString()));



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有